1
Más allá de los arreglos lineales: Escalabilidad a datos multidimensionales
AI032Lesson 4
00:00

Bienvenido a La gran transferencia. En programación para CPU, definimos cómo iterar; en GPGPU, definimos qué se ve una iteración. Este cambio de lógica centrada en instrucciones a lógica centrada en datos está impulsado por la Abstracción de kernel.

1. El plano __global__

Al usar el __global__ calificador, no estás escribiendo una función: estás diseñando un plano escalable. Una sola ejecución de kernel representa una unidad independiente de trabajo, lo que permite al GPU organizar miles de tareas idénticas en su gran número de núcleos sin gestión manual de hilos.

2. El resolutor de direcciones globales

¿Cómo encuentra un solo hilo entre millones su objetivo? Utiliza un contrato determinista conocido como la fórmula de indexación:

$$\text{IDHilo} = \text{blockIdx.x} \times \text{blockDim.x} + \text{threadIdx.x}$$

Esta fórmula actúa como un sistema de coordenadas, conectando los datos lógicos del software (el arreglo) con la jerarquía física del hardware (bloques y hilos).

Arreglo de memoria global (10 millones de elementos)Bloque 0Bloque 1Bloque N-1índice = 1 * blockDim + threadIdx

3. Configuración de ejecución

Los <<<B, T>>> parámetros definen la forma de la rejilla. Esto garantiza Escalabilidad transparente: tu código ejecuta la misma lógica ya sea que el hardware tenga 2 SMs o 80 SMs.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>